The present technique relates to an apparatus and method for storing source operands for operations to be performed by execution circuitry of a data processing apparatus.
In modern data processing systems, it is known to provide issue circuitry to maintain a record of pending operations awaiting performance by the execution circuitry. For example, such a structure is often used in out-of-order processors to maintain a record of the pending operations that are awaiting issuance to the execution circuitry. When all of the data values required as source operands for a pending operation are available, the issue circuitry can then select that pending operation to be issued to the execution circuitry. Typically the record maintained by the issue circuitry for each pending operation incorporates register identifiers to identify each register holding one of the required source operands, and the register file is then accessed at the time the operation is to be issued to the execution circuitry in order to obtain the required data values from those registers. However, as systems increase in complexity, and hence may for example allow multiple operations to be dispatched to the execution circuitry in a particular clock cycle, this can require significant complexity in the construction of the register file, in particular to provide sufficient read ports to enable all of the required source operands to be retrieved. If an insufficient number of read ports are provided, then this can impact performance, since it may take more cycles to obtain the required source operands before the operation can be executed.
Whilst the data values could in principle be retrieved from the register file and stored within the record structure maintained by the issue circuitry prior to a pending operation being selected for issuance to the execution circuitry, this would significantly increase the storage requirements and complexity of the issue circuitry, since such data values will typically be significantly larger than the register identifiers required to identify a register containing those values.
Accordingly, it would be desirable to provide an improved mechanism for storing source operands for operations to be performed on execution circuitry of a data processing apparatus.